package com.qfjy.client.video;

import com.qfjy.client.video.impl.VideoInfoFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 name属性 指定FeignClient名称。指定我们要调用哪个服务。name属性会作为微服务的名称，用于服务发现。使用者可直接通过@Autowired注入。
 path属性 定义当前FeignClient的统一前缀
 fallback 当配置fallback的时候,如果接口中的方法出现问题,就会去执行指定类里面的方法,因为类里面的方法可以随便 写,所以这个类有特殊要求,必须实现当前feign接口
 */
@FeignClient(name = "QF-VIDEO",path = "videoInfo",fallback = VideoInfoFallback.class)
public interface VideoInfoFeignClient {


    /**
     * http://QF-VIDEO/videoInfo/select?pcode=1111
     * @param pcode
     * @return
     */
    @GetMapping("select")
    @ResponseBody
    public String selectVideoInfoByPcode(@RequestParam("pcode") String pcode);


    /**
     //视频微服务  进行进程间调用 RestTemplate
     //  String url="http://localhost:8085/videoInfo/select?pcode="+pcode;
     //Ribbon: 当Ribbon与Eureka配合使用时，Ribbon可自动从Eureka Server获取服务提供者地址列表，并基于负载均衡算法，请求其中一个服务提供者实例。
    //Ribbon+RestTemplate
     String url="http://QF-VIDEO/videoInfo/select?pcode="+pcode;
    String videoInforesult= restTemplate.getForObject(url,String.class);
        log.info("会议微服务--》调用视频微服务响应结果：{}",videoInforesult);
     */


    @GetMapping("select1")
    @ResponseBody
    public String selectVideoInfoByPcode1(@RequestParam("pcode") String pcode);
}
